package DAO;

import static Conexao.ConexaoBancoDeDados.getConexao;
import Model.BeanModelo;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;

public class DAOModelo {

    public DAOModelo() {
    }

    private BeanModelo GetModelo(ResultSet rs) {
        try {
            if (rs.first()) {
                BeanModelo modelo = new BeanModelo();
                modelo.setDescricao(rs.getString("descricao"));
                modelo.setID(rs.getInt("ID"));
                return modelo;
            } else {
                //Não retornou nenhuma linha
                return null;
            }
        } catch (SQLException e) {
            e.printStackTrace();
            return null;
        }
    }

    private ArrayList<BeanModelo> GetModelos(ResultSet rs) {
        try {
            if (rs.first()) {
                ArrayList<BeanModelo> retorno = new ArrayList<>();
                BeanModelo modelo = new BeanModelo();
                modelo.setDescricao(rs.getString("descricao"));
                modelo.setID(rs.getInt("ID"));
                retorno.add(modelo);
                while (rs.next()) {
                    modelo = new BeanModelo();
                    modelo.setDescricao(rs.getString("descricao"));
                    modelo.setID(rs.getInt("ID"));
                    retorno.add(modelo);
                }
                return retorno;
            } else {
                //Não retornou nenhuma linha
                return null;
            }
        } catch (SQLException e) {
            e.printStackTrace();
            return null;
        }
    }

    public BeanModelo RetornaModelo(int ID) {
        try (Connection conn = getConexao()) {
            String sql;
            sql = "SELECT * FROM modelo WHERE ID = ?";
            PreparedStatement ps = conn.prepareStatement(sql);
            ps.setString(1, String.valueOf(ID));
            ResultSet rs = ps.executeQuery();
            return GetModelo(rs);
        } catch (SQLException e) {
            return null;
        }
    }

    public ArrayList<BeanModelo> RetornaModelos() {
        try (Connection conn = getConexao()) {
            String sql;
            sql = "SELECT * FROM modelo";
            PreparedStatement ps = conn.prepareStatement(sql);
            ResultSet rs = ps.executeQuery();
            return GetModelos(rs);
        } catch (SQLException e) {
            return null;
        }
    }
}
